package com.dufang.singletonMode;

/**
 * @ClassName:singleton
 * @Description 单例模式-饿汉模式 类的构造函数定义为private的，保证其他类不能实例化此类，
 *              然后提供了一个静态实例并返回给调用者。饿汉模式是最简单的一种实现方式，饿汉模式在类加载的时候就对实例进行创建，
 *              实例在整个程序周期都存在。
 *
 *              优点：是只在类加载的时候创建一次实例，不会存在多个线程创建多个实例的情况，避免了多线程同步的问题。
 *              缺点：也很明显，即使这个单例没有用到也会被创建，而且在类加载之后就被创建，内存就被浪费了。
 *              这种实现方式适合单例占用内存比较小，在初始化时就会被用到的情况。但是，如果单例占用的内存比较大，
 *              或单例只是在某个特定场景下才会用到，使用饿汉模式就不合适了，这时候就需要用到懒汉模式进行延迟加载。
 * @Author DUFANG
 * @Date 2025/7/7/007 8:46
 * @Version 1.0
 **/
public final class Singleton {
    //定义为private，保证其他类不能被其它类实例化，
    private static Singleton instance=new Singleton();//自行创建实例
    private Singleton(){
        System.out.println(Thread.currentThread().getName()+"  我是饿汉式");
    }//构造函数

    //通过该函数向整个系统提供实例
    public static Singleton getInstance() {
        return instance;
    }

    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            new Thread(()->{
                Singleton.getInstance();
            }).start();
        }
    }
}
